stm32 SPI读写储存卡(MicroSD TF卡) |
您所在的位置:网站首页 › sony32gb 储存卡 › stm32 SPI读写储存卡(MicroSD TF卡) |
stm32 SPI读写储存卡(MicroSD TF卡)
简述操作分析及实现0.整个流程1.上电以后储存卡的初始化2.如何进行读写3.下面是具体的过程
博客原址:http://www.coderframe.com/Info/index/id/123.html 简述
1、上电以后储存卡的初始化 2、如何进行读写 1.上电以后储存卡的初始化 上电给MicroSD卡至少74个时钟信号 发送CDM0 (x041)复位 发送CMD1 让MicroSD卡进入SPI模式 2.如何进行读写 这里主要对1,3进行详细的讨论 你需要知道的是spi通信是怎样进行的就可以完成以上连个任务了 3.下面是具体的过程 //首先看一下我们的函数 char SD_Init(void); //初始化函数 char WriteSectorToMicroSD(long addr,char *buff);//写一个扇区 512bit char ReadSectorFromMicroSD(long sector,char *buffer);// 读一个扇区下面是主函数里的的部分 //定义读入缓冲区 extern char MicroSDDataBuff[512]; void MicroSDTest() { //这是在内存卡初始化以后的测试进行读写如果不成功还是从读写序列号开始吧 //WriteSectorToMicroSD(2,"Hello I here did you find me!!!"); delay_ms(200); ReadSectorFromMicroSD(2,MicroSDDataBuff); //printf("MicroSD read is:%s!!!!\n\n",MicroSDDataBuff); } int main() { char arr[100]={0},key=-1; int x=0,y=0; SPI2_Init(); uart_init(115200); delay_init(); SD_Init(); MicroSDTest(); printf("Read:%s",MicroSDDataBuff); while(1); } //下面是MicroSD的初始化及读写函数 #define MicroSD_CS_SET GPIO_SetBits(GPIOB,GPIO_Pin_0) #define MicroSD_CS_RESET GPIO_ResetBits(GPIOB,GPIO_Pin_0) char MicroSDDataBuff[512]={0};//一个扇区的大小 char SentCommandToMicroSD(char cmd,int data,char crc) { char result=0,times=0; MicroSD_CS_SET;//禁止SD卡片选 同步时钟 SPI1_ReadWriteByte(0xff); MicroSD_CS_RESET;//开始传输 SPI1_ReadWriteByte(cmd); for(times=0;times>24)&0xff); data |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |